package fr.upstlse.glre.client.administration.document.libelle.action;

import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.user.client.rpc.AsyncCallback;

import fr.upstlse.glre.client.administration.document.libelle.ModificationLibelleWindow;
import fr.upstlse.glre.client.utilitaires.ControlerUtil;
import fr.upstlse.glre.client.vo.depot.LibelleVOGWT;
import fr.upstlse.glre.client.widgets.fields.LibelleFields;

public class ModifyLibelleAction extends SelectionListener<ComponentEvent> {
	
	LibelleFields libelleFields;

	public ModifyLibelleAction(LibelleFields pLibelleFields) {
		super();
		libelleFields = pLibelleFields;
	}

	public void componentSelected(ComponentEvent ce) {
		LibelleVOGWT lLibelleVOGWT = new LibelleVOGWT();
		lLibelleVOGWT.setId(new Long(libelleFields.getId().getValue()));
		lLibelleVOGWT.setIntitule(libelleFields.getIntitule().getValue());

		final MessageBox lWaitMessageBox = MessageBox.progress("Information",
				"Modification du libellé" + lLibelleVOGWT.getIntitule(),
				"modification en cours...");
		AsyncCallback<Object> lCallback = new AsyncCallback<Object>() {
			public void onFailure(Throwable pCaught) {
				lWaitMessageBox.hide();
				MessageBox.alert("Erreur UpdateLibelle", pCaught.getMessage(),
						null);
			}

			public void onSuccess(Object pResult) {
				lWaitMessageBox.hide();
				Info.display("Information",
						"Libellé modifié avec succès", "");
				ModificationLibelleWindow.closeCurrentWindow();
			}
		};
		ControlerUtil.getControlerServiceAsyncInstance().updateLibelle(lLibelleVOGWT, lCallback);
	}
}
